package com.amt.configure;

import com.amt.util.Base64Util;
import com.github.pagehelper.util.StringUtil;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.Map;

/**   
 * @Title: Upload.java 
 * @Package com.amt.configure 
 * @Description: TODO(文件上传配置类) 
 * @author 江伟  
 * @date 2021年3月21日 下午3:51:35
 * Copyright (c) ©1994-2021 Scjydz.com All Rights Reserved.
 */
@Component
@ConfigurationProperties("upload")
@Data
public class Upload {

	// 获取存放位置
	private Map<String, String> localtion;
	
	// 单个文件大小
	private String maxFileSize;
	
	// 上次总文件大小
	private String maxRequestSize;

	//文件访问前缀/域名
	private String fileAccessPrefix;
	
	/**
	 * @description: 获取文件存放路径
	 * @return 文件存放路径
	 */
	public String getBasePath() {
		return getSystemPath("");
	}
	
	/**
	 * @description: 获取二维码文件存放路径
	 * @return 二维码文件存放路径
	 */
	public String getBaseCardPath(String path) {
		return getSystemPath(path);
	}
	
	/**
	 * @description: 获取医生二维码图片存放路径
	 * @return 医生二维码图片存放路径
	 */
	public String getDoctorQrCodePath() {
		return getSystemPath("doctor/");
	}

	/**
	 * @description: 获取有层级的系统路径
	 * @param tmp 层级路径
	 * @return 系统路径
	 */
	private String getSystemPath(String tmp) {
		String location = null;
		String os = System.getProperty("os.name");
		if(os.toLowerCase().startsWith("win")) {
			location = this.getLocaltion().get("windows")+tmp;
		} else {
			location = this.getLocaltion().get("linux")+tmp;
		}
		return location;
	}
	/**
	 * @description: 获取有层级的系统路径
	 * @param tmp 层级路径
	 * @return 系统路径
	 */
	public String getSystemPathTwo(String tmp) {
		String location = null;
		String os = System.getProperty("os.name");
		if(os.toLowerCase().startsWith("win")) {
			location = this.getLocaltion().get("windows")+ Base64Util.decodeData(tmp);
		} else {
			location = this.getLocaltion().get("linux")+ Base64Util.decodeData(tmp);
		}
		return location;
	}
	
	/**
	 * @description: 获取解密后的医生二维码图片全路径
	 * @param str 加密的文件路径
	 * @return 解密的文件全路径
	 */
	public String getDoctorQrCodePath(String str) {
		return getDecodeFilePath("doctor/", str);
	}
	
	/**
	 * @description: 获取解密后的二维码图片全路径
	 * @param str 加密的文件路径
	 * @return 解密的二维码图片全路径
	 */
	public String getQrCodePath(String str) {
		return getDecodeFilePath("card/", str);
	}
	
	
	/**
	 * @description: 获取解密后的文件全路径
	 * @param str 加密的文件路径
	 * @return 解密的文件全路径
	 */
	public String getFilePath(String str) {
		return getDecodeFilePath("", str);
	}
	
	/**
	 * @description: 获取有层级的解密后文件全路径
	 * @param tmp 层级路径
	 * @param str 加密的文件路径
	 * @return 解密后文件全路径
	 */
	private String getDecodeFilePath(String tmp, String str) {
		if (StringUtil.isEmpty(str)) {
			return null;
		}
		String path = this.fileAccessPrefix + tmp + Base64Util.decodeData(str);
		return path;
	}

}
